#ifndef AMSCENE_H
#define AMSCENE_H

#include <QLinkedList>
#include "amlight.h"
#include "amvirtentity.h"

/**
 *   AMScene holds all objects that will be passed
 *   to GLRenderer for rendering.
 */
class AMScene : public AMVirtualEntity
{
public:
    static AMScene * get();

    // Add entities to the scene
    bool add(AMVirtualEntity * entity);

    // Add an OpenGL light source to the scene
    bool add(const AMLight & light);

    // Clear only the entities from the scene
    void clearEntities();

    // Clear everything, incl. lights, camera, entities
    void clear();
protected:
    void renderEnity();
private:
    AMScene();
    QLinkedList<AMVirtualEntity *> m_Entities;
    QLinkedList<AMLight> m_Lights;
    short m_LightCount;
};


#endif // AMSCENE_H
